/* Fenil Chandarana Fab Academy 2022 Webpage link: https://fabacademy.org/2022/labs/vigyanashram/students/fenil-chandarana/ */ #include #include #include #define SCREEN_WIDTH 128 // OLED display width, in pixels #define SCREEN_HEIGHT 64 // OLED display height, in pixels //#include //#include "ThingSpeak.h" Adafruit_SSD1306 display(SCREEN_WIDTH, SCREEN_HEIGHT, &Wire, -1); //const char* ssid = "Fenil"; // your network SSID (name) //const char* password = "876543210"; // your network password //WiFiClient client; //unsigned long myChannelNumber = 1755184; //const char * myWriteAPIKey = "ZBEPA3B1ZEGQZOWS"; #define trigPin 5 #define echoPin 18 int led1 = 17; int led2 = 16; //int water = 7; int x = 0; int check = 0; int m = 0; int y = 0; int flag1 = 0; int flag2 = 0; int plug1 = 1; int plug2 = 1; void setup() { Serial.begin(9600); pinMode(trigPin, OUTPUT); pinMode(echoPin, INPUT); pinMode(led1, OUTPUT); pinMode(led2, OUTPUT); // WiFi.mode(WIFI_STA); // ThingSpeak.begin(client); if(!display.begin(SSD1306_SWITCHCAPVCC, 0x3C)) { // Address 0x3D for 128x64 Serial.println(F("SSD1306 allocation failed")); for(;;); } delay(100); /* if(WiFi.status() != WL_CONNECTED){ Serial.print("Attempting to connect"); while(WiFi.status() != WL_CONNECTED){ WiFi.begin(ssid, password); delay(5000); } Serial.println("\nConnected."); }*/ } void loop() { long duration, distance; digitalWrite(trigPin, LOW); delayMicroseconds(2); digitalWrite(trigPin, HIGH); delayMicroseconds(10); digitalWrite(trigPin, LOW); duration = pulseIn(echoPin, HIGH); distance = (duration/2) / 29.1; delay(100); int i =0; for (i=0; i<90; i++){ //after which cycle resets check = digitalRead(14); // lcd.setCursor(0,0); ///lcd.print("Stream : "); //lcd.print(x); //lcd.setCursor(0,1); // lcd.print("Drops : "); // lcd.print(y); //delay(100); if (check==0 && distance>10) // value of photoresistor { if (i < 80) { // stream , constant power m=m+1; delay(80); if (m > 150) // drop , fluctuating power { y=y+1; m = 0; break; } } else { m = 0;} } if (check==0 && i == 80) // suppose the value of i is 60 in "if (check == HIGH && i == 60)". Let say the stream breaks at 20 and resumed at 21 then +1 vill be incremented in stream when the number reaches at m=81. 21+60=81. { if(distance >10){ // photoresistor x = x+1; //lcd.setCursor(0,0); //lcd.print("Stream : "); // lcd.print(x); //// lcd.setCursor(0,1); //lcd.print("Drops :"); //lcd.print(y); delay (100); } } if (check==1 && i>2) { i = 0; delay(100); } Serial.print("m = "); Serial.print(m); Serial.print(" "); Serial.println(i); Serial.print(" "); Serial.println(check); Serial.print(" "); Serial.println(distance); Serial.print(" "); Serial.println(x); Serial.print(" "); Serial.println(y); display.clearDisplay(); display.setTextSize(1.7); display.setTextColor(WHITE); display.setCursor(0, 10); // Display static text display.println("Stream Count:"); display.setCursor(0, 20); // Display static text display.println(x); display.setCursor(0, 30); // Display static text display.println("Drop Count:"); display.setCursor(0, 40); // Display static text display.println(y); display.display(); // int t = ThingSpeak.writeField(myChannelNumber,1,x, myWriteAPIKey); // int k= ThingSpeak.writeField(myChannelNumber,3,y, myWriteAPIKey); if (y == 1) // led for drop , fluctuating power { flag1 = 1; } if (flag1 == HIGH && plug1 == 1){ digitalWrite (led1, HIGH); flag1 = 0; } if (x == 1) // led for stream , constant power { flag2 = 1; } if (flag2 == HIGH && plug2 == 1) { digitalWrite (led2, HIGH); flag2 = 0; } } }